In an event driven system, events occur in response to a change in state of the system. In general, an event is generated at a producer, also known as an emitter or agents, and carries information that describes the change in the system and how the change effects various parts of the system. Events can be queued for processing, and a consumer, also known as a sink, can read events from a queue to select events for further processing.
One exemplary application for event-driven systems is payment processing, such as credit-card payment processing, in which multiple events are associated with each transaction. In general, these types of transaction processing systems must process a high volume of events. Because processing such events individually can be inefficient, it is advantageous to aggregate similar events together. For example, event aggregation can provide a reduced number of parses, a reduced number of serializations, a reduced number of input/out (I/O) operations, and/or increased structured query language (SQL) efficiency.